# 

# 

# **Kruskal-Wallis检验详解与Python代码示例**

# 

# **一、Kruskal-Wallis检验概述**

# 

# Kruskal-Wallis检验，也称为H检验或克鲁斯卡尔-沃利斯检验，是一种非参数检验方法，主要用于比较三个或更多独立样本是否来自具有相同分布的总体。与单因素方差分析（ANOVA）类似，但Kruskal-Wallis检验不需要假设数据来自正态分布，也不要求各组方差相等，因此它对于不满足这些条件的数据集特别有用。

# 

# **二、Kruskal-Wallis检验的假设**

# 

# 1. **无效假设（H0）**：所有样本来自的总体中位数相同。

# 2. **备择假设（H1）**：至少有一个样本来自的总体中位数与其他样本不同。

# 

# 此外，Kruskal-Wallis检验还要求数据是独立的，即一个样本中的观测值不会影响另一个样本中的观测值。

# 

# **三、Kruskal-Wallis检验的步骤**

# 

# 1. **收集数据**：从每个总体中抽取独立样本。

# 2. **合并数据并排序**：将所有样本的数据合并，并按大小顺序排列。

# 3. **计算秩次**：为每个数据点分配一个秩次（即排名），如果有相同的数据点，则分配平均秩次。

# 4. **计算秩和**：对每个样本内的秩次求和，得到每个样本的秩和。

# 5. **计算统计量**：使用秩和计算Kruskal-Wallis统计量H。

# 6. **确定显著性**：根据H值和自由度（组数减1）确定p值，并与设定的显著性水平（如0.05）进行比较。

# 

# **四、Python代码示例**

# 

# 下面是一个使用Python和SciPy库进行Kruskal-Wallis检验的示例代码：

# 

# 

import numpy as np

from scipy.stats import kruskal



# 假设我们有三个样本组，分别代表三种不同教学方法下的学生成绩

group1 = [85, 90, 78, 92, 88]

group2 = [76, 82, 79, 81, 85]

group3 = [91, 87, 93, 95, 89]



# 将样本组合并为一个列表

all_groups = [group1, group2, group3]



# 使用kruskal函数进行检验

H, p = kruskal(*all_groups)



# 输出结果

print(f"Kruskal-Wallis统计量H: {H}")

print(f"p值: {p}")



# 解释结果

if p < 0.05:

    print("拒绝无效假设，至少有一个组的中位数与其他组不同。")

else:

    print("无法拒绝无效假设，所有组的中位数可能相同。")



# 注意：在实际应用中，还需要对数据的正态性和方差齐性进行检验，

# 如果数据满足这些条件，则可能更适合使用单因素方差分析（ANOVA）。
